import java.util.Scanner;

public class day230325 {
    // 不要二
    // 找规律或计算后可以发现
    // **__**__**__*
    // **__**__**__*
    // __**__**__**_
    // __**__**__**_
    // **__**__**__*
    // 是这样摆放的
    // 只要上下左右第二格没有就可以摆
    // i - 2, j
    // i, j - 2
    // i, j + 2
    // i + 2, j
    // 遍历数组, 只要上和左第二格没有蛋糕, 就摆上蛋糕并修改为 1
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int W = in.nextInt();
            int H = in.nextInt();
            // 上和左留两行, 防止越界
            int[][] array = new int[W + 2][H + 2];
            // 计数
            int count = 0;
            for (int i = 2; i < W + 2; i++) {
                for (int j = 2; j < H + 2; j++) {
                    if (array[i - 2][j] != 1 && array[i][j - 2] != 1) {
                        // 只用判断上和左就行
                        count++;
                        array[i][j] = 1;
                        // 摆上蛋糕, 计数+1
                    }
                }
            }
            System.out.println(count);
        }
    }

    // 反过来
    // 数组初始都是0
    // 遍历到0, 把不能放的改为1(右和下第二格)
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int W = in.nextInt();
            int H = in.nextInt();
            // 上和左留两行, 防止越界
            int[][] array = new int[W][H];
            // 计数
            int count = 0;
            for (int i = 0; i < W; i++) {
                for (int j = 0; j < H; j++) {
                    if (array[i][j] == 0) {
                        count++;
                        if (i + 2 < W) {
                            array[i + 2][j] = 1;
                        }
                        if (j + 2 < H) {
                            array[i][j + 2] = 1;
                        }
                    }
                }
            }
            System.out.println(count);
        }
    }


    // 把字符串转换成整数
    public int StrToInt(String str) {
        if (str.length() == 0) {
            return 0;
        }

        int flag = 0;
        if (str.charAt(0) == '-' || str.charAt(0) == '+') {
            // 首位是符号, 让 flag = 1, 下面遍历的时候从 1 开始
            flag = 1;
        } else if (!Character.isDigit(str.charAt(0))){
            // 首位不是符号, 也不是数字, 不是合法的字符串
            return 0;
        }

        int ret = 0;
        char ch;
        for (int i = flag; i < str.length(); i++) {
            ch = str.charAt(i);
            if (Character.isDigit(ch)) {
                // '5' - '0', 刚好得到 5
                // ret * 10 进位
                ret = ret * 10 + (ch - '0');
            } else {
                return 0;
            }
        }
        if (str.charAt(0) == '-') {
            // 是负数的情况
            ret = -ret;
        }

        return ret;
    }
}
